import type { Router } from 'vue-router'
import { useAuthStore } from '@/stores'

export function setupRouterGuards(router: Router) {
  // 全局前置守卫
  router.beforeEach(async (to, from, next) => {
    const authStore = useAuthStore()
    
    // 公开路由，不需要登录
    const publicRoutes = ['/login']
    
    if (publicRoutes.includes(to.path)) {
      // 如果已登录，重定向到首页
      if (authStore.isLoggedIn) {
        next('/')
      } else {
        next()
      }
      return
    }
    
    // 检查是否已登录
    if (!authStore.isLoggedIn) {
      // 尝试从本地存储恢复登录状态
      const token = localStorage.getItem('token')
      if (token) {
        try {
          await authStore.getUserInfo()
          next()
        } catch (error) {
          // Token无效，清除并跳转到登录页
          authStore.logout()
          next('/login')
        }
      } else {
        next('/login')
      }
      return
    }
    
    // 权限检查
    const userRole = authStore.userRole
    
    // 管理员路由
    const adminRoutes = ['/settings']
    if (adminRoutes.some(route => to.path.startsWith(route))) {
      if (userRole !== 'admin') {
        // 非管理员访问管理员页面，跳转到首页
        next('/')
        return
      }
    }
    
    next()
  })
  
  // 全局后置钩子
  router.afterEach((to) => {
    // 设置页面标题
    const title = to.meta?.title as string
    if (title) {
      document.title = `${title} - 音视频管理系统`
    } else {
      document.title = '音视频管理系统'
    }
  })
} 